home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 140
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin
/
tools
/
xpicw
/
xpicw110.lzh
/
WLSource
/
vol.s
< prev
next >
Wrap
Text File
|
1997-04-10
|
2KB
|
150 lines
* vol.s Vertical OverLap
* 垂直方向のオーバーラップ / 最高速 = 3
* by Mitsuky
SPEED_MAX equ 3
.offset 8 * 引き数
_source_ptr: .ds.l 1
_dest_ptr: .ds.l 1
_speed: .ds.l 1
_vdisp: .ds.l 1
TR32 .macro num
movem.l (a1)+,d0-d5/a0/a5
movem.l d0-d5/a0/a5,num(a2)
movem.l (a3)+,d0-d5/a0/a5
movem.l d0-d5/a0/a5,num(a4)
.endm
.text
.even
.dc.b 'WL10',$0d,$0a
.dc.b '垂直方向のオーバーラップ / 最高速 = 3',$0d,$0a
.dc.b ' by Mitsuky',$0d,$0a
.dc.b $1a
.even
vol:
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
move.l _speed(a6),d0 * d0.w =
bmi main_ask
cmpi.l #SPEED_MAX,d0
bhi main_err
tst.l _vdisp(a6)
bmi main_ask_vdisp
movea.l _source_ptr(a6),a1 * a1.l = 転送元アドレス・その1
movea.l _dest_ptr(a6),a2 * a2.l = 転送先アドレス・その1
movea.l a1,a3
movea.l a2,a4
adda.l #1024*511,a3 * a3.l = 転送元アドレス・その2
adda.l #1024*511,a4 * a4.l = 転送先アドレス・その2
move.w #512/2,d7
lsr.w d0,d7
subq.w #1,d7 * d7.w = ループ回数
moveq.l #1,d5
lsl.w d0,d5
subq.w #1,d5 * d5.w = 1度に描くラスター数
loop:
bsr vdisp
move.w d5,d6
move.w d5,-(sp)
loop_2:
TR32 0
TR32 32*1
TR32 32*2
TR32 32*3
TR32 32*4
TR32 32*5
TR32 32*6
TR32 32*7
TR32 32*8
TR32 32*9
TR32 32*10
TR32 32*11
TR32 32*12
TR32 32*13
TR32 32*14
TR32 32*15
TR32 32*16
TR32 32*17
TR32 32*18
TR32 32*19
TR32 32*20
TR32 32*21
TR32 32*22
TR32 32*23
TR32 32*24
TR32 32*25
TR32 32*26
TR32 32*27
TR32 32*28
TR32 32*29
TR32 32*30
TR32 32*31
lea.l 1024(a1),a1
lea.l 1024*2(a2),a2
lea.l -1024*3(a3),a3
lea.l -1024*2(a4),a4
dbra d6,loop_2
move.w (sp)+,d5
dbra d7,loop
main_rts:
moveq.l #0,d0
main_rts_2:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
**** ****
main_err:
moveq.l #-1,d0
bra main_rts_2
**** ****
main_ask:
moveq.l #SPEED_MAX,d0
bra main_rts_2
**** ****
main_ask_vdisp:
move.l _speed(a6),d0
lea.l ask_vdisp_table(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
bra main_rts_2
ask_vdisp_table:
.dc.w 512,512/2,512/4,512/8
*********************************************************
vdisp:
movem.l a0,-(sp)
move.l _vdisp(a6),a0
jsr (a0)
movem.l (sp)+,a0
rts